# Summary
#
# <プラグイン概要>
# ページの作成日（更新日ではない）が新しい順に指定件数のページ内容を表示する。
# その際、各ページ内で使用されているプラグインは無視される。
#
# <使用方法>
# #summary(表示件数,タグ名)
#
# ページの本文に //EOS が記載されている場合（End Of Summary）、
# そこまでを概要として表示する。
#
require 'date'
module WikiPlugin::Summary::Function

  def init
  end
  def inline
  end

  def convert items=10, tag=nil
    options = {
      :include    => :tags,
      :select     => 'contents.title, contents.created_on, contents.body',
      :order      => 'contents.created_on desc',
      :limit      => items,
    }
    options[:conditions] = ['tags.name = ?', tag] if tag

    contents = Content.find(:all, options)
#    renderer = Content.get_renderer

    summary = contents.collect do |content|

      body = ''
      next_body = ''

      content.body = content.body.each_line do |line|
        # //EOSが見つかった場合は、続きを読むリンクを追加して、以降は表示しない
        if body =~ /^\/\/\s?EOS\s*/ then
          next_body = "<div class=\"summary_next\"><a href=\"/#{WWW_DIR}#{(WWW_DIR.to_s == '') ? '' : '/'}#{URI.encode(content.title)}\">...続きを読む</a></div>"
          break
        end
        body += line unless line =~ /^#.*$/
      end
      content.body = body

      # メニューと現在表示中のページは対象外
      unless content.title == DEFAULT_MENU || @content.title == content.title then
        date = DateTime.parse(content.created_on.to_s).strftime('%Y-%m-%d %H:%M:%S')
        "<div class=\"summary\">\n" +
            "<div class=\"summary_header\">\n" +
                "<div class=\"summary_date\">#{date}</div>\n" +
                "<div class=\"summary_title\"><a href=\"/#{WWW_DIR}#{(WWW_DIR.to_s == '') ? '' : '/'}#{URI.encode(content.title)}\">#{content.title}</a></div>\n" +
            "</div>" +
            "<div class=\"summary_body\">" + content.fetch_convert_body_without_block + next_body + "</div>" +
            "</div><div class=\"to_top\"><a href=\"#top\">ページトップへ</a>\n" +
        "</div>\n"

      end
    end

    return summary
  end
end
